
package com.sskj.mq.consumer;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;
import com.sskj.jkzx.domain.entity.quantity.EmpCreditQuantity;
import com.sskj.jkzx.domain.entity.quantity.EmpQuantity;
import com.sskj.jkzx.domain.entity.quantity.EmpTypeQuantity;
import com.sskj.jkzx.domain.entity.quantity.EngQuantity;
import com.sskj.jkzx.domain.entity.quantity.HtEngQuantity;
import com.sskj.jkzx.domain.entity.quantity.HtQuantity;
import com.sskj.jkzx.domain.entity.quantity.OrgCreditQuantity;
import com.sskj.jkzx.domain.entity.quantity.OrgQuantity;
import com.sskj.jkzx.domain.entity.quantity.OrgTypeQuantity;
import com.sskj.jkzx.domain.entity.quantity.SgxkEngQuantity;
import com.sskj.jkzx.domain.entity.quantity.SgxkQuantity;
import com.sskj.jkzx.domain.entity.quantity.TsEngQuantity;
import com.sskj.jkzx.domain.entity.quantity.WgclQuantity;
import com.sskj.jkzx.domain.entity.quantity.WgclTypeQuantity;
import com.sskj.jkzx.domain.entity.quantity.ZtbEngQuantity;
import com.sskj.jkzx.domain.entity.quantity.ZtbQuantity;
import com.sskj.jkzx.service.impl.QuantityServiceImpl;

@Component
public class CmisMQConsumer {

	protected final Log logger = LogFactory.getLog(CmisMQConsumer.class);

	@Autowired
	private QuantityServiceImpl service;

//	@JmsListener(destination = "TJSUMXX", containerFactory = "cmisTjxxListener")
	public void receiveTopic(String text) {
		if (text != null) {
			logger.info(text);
			JSONObject jsonStr = JSONObject.parseObject(text);
			String tjxm = jsonStr.getString("tjxm");

			switch (tjxm) {
			case "01":
				m01(jsonStr);
				break;
			case "02":
				m02(jsonStr);
				break;
			case "03":
				m03(jsonStr);
				break;
			case "04":
				m04(jsonStr);
				break;
			case "05":
				m05(jsonStr);
				break;
			case "06":
				m06(jsonStr);
				break;
			case "07":
				m07(jsonStr);
				break;
			case "08":
				break;
			case "09":
				m09(jsonStr);
				break;
			case "10":
				m10(jsonStr);
				break;
			case "11":
				m11(jsonStr);
				break;
			case "12":
				m12(jsonStr);
				break;
			case "13":
				m13(jsonStr);
				break;
			case "14":
				m14(jsonStr);
				break;
			case "15":
				m15(jsonStr);
				break;
			case "16":
				m16(jsonStr);
				break;
			case "17":
				m17(jsonStr);
				break;
			case "18":
				m18(jsonStr);
				break;
			case "19":
				m19(jsonStr);
				break;
			case "20":
				break;
			case "21":
				m21(jsonStr);
				break;
			case "22":
				m22(jsonStr);
				break;
			default:
				break;
			}
		}
	}

	// 企业基础数据所有和增加
	private void m01(JSONObject jsonStr) {
		OrgQuantity entity = new OrgQuantity();

		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("所有".equals(value[0])) {
				entity.setTotal(Long.valueOf(value[1]));
			} else {
				entity.setNewly(Long.valueOf(value[1]));
			}
		}

		service.saveOrg(entity);
	}

	// 企业信用评级数据
	private void m02(JSONObject jsonStr) {
		OrgCreditQuantity entity = new OrgCreditQuantity();

		List<String[]> tmpList = edit(jsonStr);
		for (String[] value : tmpList) {
			if ("A级企业".equals(value[0])) {
				entity.setAj(value[1]);
			} else if ("B级企业".equals(value[0])) {
				entity.setBj(value[1]);
			} else {
				entity.setCj(value[1]);
			}
		}

		service.saveOrgc(entity);
	}

	// 本地企业类型数据比例
	private void m03(JSONObject jsonStr) {
		OrgTypeQuantity entity = new OrgTypeQuantity();
		List<String[]> tmpList = edit(jsonStr);

		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("建设公司".equals(value[0])) {
				entity.setJsdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("施工公司".equals(value[0])) {
				entity.setSgdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("监理公司".equals(value[0])) {
				entity.setJldw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("勘察设计公司".equals(value[0])) {
				entity.setKcdw(Integer.valueOf(value[1].replace("%", "")));
				entity.setSjdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("图审单位".equals(value[0])) {
				entity.setTsdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("检测机构".equals(value[0])) {
				entity.setJcdw(Integer.valueOf(value[1].replace("%", "")));
			}
		}
		entity.setType("本地");
		service.saveOrgtype(entity);
	}

	// 人员基础信息数据所有和增加
	private void m04(JSONObject jsonStr) {
		EmpQuantity entity = new EmpQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("所有".equals(value[0])) {
				entity.setTotal(Long.valueOf(value[1]));
			} else {
				entity.setNewly(Long.valueOf(value[1]));
			}
		}

		service.saveEmp(entity);
	}

	// 登记人员分类数据
	private void m05(JSONObject jsonStr) {
		EmpTypeQuantity entity = new EmpTypeQuantity();

		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if (value != null) {
				if ("注册监理工程师(国家级)".equals(value[0])) {
					entity.setV1(value[1]);
				} else if ("注册监理工程师(省级)".equals(value[0])) {
					entity.setV2(value[1]);
				} else if ("注册造价师".equals(value[0])) {
					entity.setV3(value[1]);
				} else if ("注册建造师(一级)".equals(value[0])) {
					entity.setV4(value[1]);
				} else if ("注册建造师(二级)".equals(value[0])) {
					entity.setV5(value[1]);
				} else if ("注册建造师(临时一级)".equals(value[0])) {
					entity.setV6(value[1]);
				} else if ("注册建造师(临时二级)".equals(value[0])) {
					entity.setV7(value[1]);
				} else if ("注册建造师(项目经理二级)".equals(value[0])) {
					entity.setV8(value[1]);
				} else if ("注册建造师(项目经理三级)".equals(value[0])) {
					entity.setV9(value[1]);
				}
			}
		}

		// service.saveEmptype(entity);
	}

	// 个人信用评级数据
	private void m06(JSONObject jsonStr) {
		EmpCreditQuantity entity = new EmpCreditQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("A级个人".equals(value[0])) {
				entity.setAj(value[1].replace("%", ""));
			} else if ("B级个人".equals(value[0])) {
				entity.setBj(value[1].replace("%", ""));
			} else {
				entity.setCj(value[1].replace("%", ""));
			}
		}

		service.saveEmpc(entity);
	}

	// 在建工程，竣工工程，招标中工程数据统计
	private void m07(JSONObject jsonStr) {
		EngQuantity entity = new EngQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("招标中".equals(value[0])) {
				entity.setZbgc(value[1]);
			} else if ("监督在建工程".equals(value[0])) {
				entity.setJdzjgc(value[1]);
			} else if ("施工许可在建工程".equals(value[0])) {
				entity.setSgxkzjgc(value[1]);
			} else {
				entity.setJggc(value[1]);
			}
		}

		service.saveEng(entity);
	}

	// 招投标工程数据所有和增加
	private void m09(JSONObject jsonStr) {
		ZtbQuantity entity = new ZtbQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("所有".equals(value[0])) {
				entity.setTotal(Long.valueOf(value[1]));
			} else {
				entity.setNewly(Long.valueOf(value[1]));
			}
		}

		service.saveZtb(entity);
	}

	// 施工合同数据所有和增加
	private void m10(JSONObject jsonStr) {
		HtQuantity entity = new HtQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("所有".equals(value[0])) {
				entity.setTotal(Long.valueOf(value[1]));
			} else {
				entity.setNewly(Long.valueOf(value[1]));
			}
		}

		service.saveHt(entity);
	}

	// 施工许可证数据所有和增加
	private void m11(JSONObject jsonStr) {
		SgxkQuantity entity = new SgxkQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("所有".equals(value[0])) {
				entity.setTotal(Long.valueOf(value[1]));
			} else {
				entity.setNewly(Long.valueOf(value[1]));
			}
		}

		service.saveSgxk(entity);
	}

	// 图审工程分类
	private void m12(JSONObject jsonStr) {
		TsEngQuantity entity = new TsEngQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("待受理工程".equals(value[0])) {
				entity.setZzcl(value[1].replace("%", ""));
			} else if ("正在审理工程".equals(value[0])) {
				entity.setZzsh(value[1].replace("%", ""));
			} else if ("一次审核完成工程".equals(value[0])) {
				entity.setYcsh(value[1].replace("%", ""));
			} else if ("重审完成工程".equals(value[0])) {
				entity.setCswc(value[1].replace("%", ""));
			}
		}
		entity.setSysl(String.valueOf((Integer.parseInt(entity.getZzcl()) + Integer.parseInt(entity.getZzsh()))));

		entity.setSywc(String.valueOf((Integer.parseInt(entity.getYcsh()) + Integer.parseInt(entity.getCswc()))));

		service.saveTseng(entity);
	}

	// 未完结招投标数据
	private void m13(JSONObject jsonStr) {
		ZtbEngQuantity entity = new ZtbEngQuantity();
		List<String[]> tmpList = edit(jsonStr);

		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("公开招标".equals(value[0])) {
				entity.setGkzb(value[1].replace("%", ""));
			} else if ("邀请招标".equals(value[0])) {
				entity.setYqzb(value[1].replace("%", ""));
			} else {
				entity.setZjfb(value[1].replace("%", ""));
			}
		}

		entity.setType("1");

		service.saveZtbeng(entity);
	}

	// 已完结招投标数据
	private void m14(JSONObject jsonStr) {
		ZtbEngQuantity entity = new ZtbEngQuantity();
		List<String[]> tmpList = edit(jsonStr);

		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("公开招标".equals(value[0])) {
				entity.setGkzb(value[1].replace("%", ""));
			} else if ("邀请招标".equals(value[0])) {
				entity.setYqzb(value[1].replace("%", ""));
			} else {
				entity.setZjfb(value[1].replace("%", ""));
			}
		}

		entity.setType("0");

		service.saveZtbeng(entity);
	}

	// 施工合同类型分类
	private void m15(JSONObject jsonStr) {
		HtEngQuantity entity = new HtEngQuantity();
		List<String[]> tmpList = edit(jsonStr);

		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("施工竣工决算".equals(value[0])) {
				entity.setSgjs(value[1]);
			} else if ("施工未竣工决算".equals(value[0])) {
				entity.setSgwjs(value[1]);
			} else if ("劳务分包竣工决算".equals(value[0])) {
				entity.setLwfbjs(value[1]);
			} else if ("劳务分包未竣工决算".equals(value[0])) {
				entity.setLwfbwjs(value[1]);
			} else if ("施工".equals(value[0])) {
				entity.setSg(value[1]);
			} else if ("劳务分包".equals(value[0])) {
				entity.setLwfb(value[1]);
			}
		}
		service.saveHtEng(entity);
	}

	// 在建工程施工许可证数据分类
	private void m16(JSONObject jsonStr) {
		SgxkEngQuantity entity = new SgxkEngQuantity();
		List<String[]> tmpList = edit(jsonStr);

		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("市政工程".equals(value[0])) {
				entity.setSz(value[1]);
			} else if ("装饰装修".equals(value[0])) {
				entity.setZszx(value[1]);
			} else if ("园林绿化".equals(value[0])) {
				entity.setYllh(value[1]);
			} else {
				entity.setFj(value[1]);
			}
		}
		entity.setType("1");
		service.saveSgxkEng(entity);
	}

	// 违规处罚数据所有和增加
	private void m17(JSONObject jsonStr) {
		WgclQuantity entity = new WgclQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("所有".equals(value[0])) {
				entity.setTotal(Long.valueOf(value[1]));
			} else {
				entity.setNewly(Long.valueOf(value[1]));
			}
		}

		service.saveWgcl(entity);
	}

	// 在建工程违规处罚数据分类
	private void m18(JSONObject jsonStr) {
		WgclTypeQuantity entity = new WgclTypeQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("停工通知".equals(value[0])) {
				entity.setTgtz(value[1]);
			} else if ("整改通知".equals(value[0])) {
				entity.setZgtz(value[1]);
			} else if ("不合格报告".equals(value[0])) {
				entity.setBhgbg(value[1]);
			} else if ("不良行为".equals(value[0])) {
				entity.setBlxw(value[1]);
			} else if ("无证施工".equals(value[0])) {
				entity.setWzsg(value[1]);
			} else if ("市场查处".equals(value[0])) {
				entity.setScxwcc(value[1]);
			}
		}

		entity.setType("1");

		service.saveWgcltype(entity);
	}

	// 在建工程违规处罚数据分类
	private void m19(JSONObject jsonStr) {
		WgclTypeQuantity entity = new WgclTypeQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("停工通知".equals(value[0])) {
				entity.setTgtz(value[1]);
			} else if ("整改通知".equals(value[0])) {
				entity.setZgtz(value[1]);
			} else if ("不合格报告".equals(value[0])) {
				entity.setBhgbg(value[1]);
			} else if ("不良行为".equals(value[0])) {
				entity.setBlxw(value[1]);
			} else if ("无证施工".equals(value[0])) {
				entity.setWzsg(value[1]);
			} else if ("市场查处".equals(value[0])) {
				entity.setScxwcc(value[1]);
			}
		}

		entity.setType("0");

		service.saveWgcltype(entity);
	}

	// 竣工工程施工许可证数据分类
	private void m21(JSONObject jsonStr) {
		SgxkEngQuantity entity = new SgxkEngQuantity();
		List<String[]> tmpList = edit(jsonStr);
		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("市政工程".equals(value[0])) {
				entity.setSz(value[1]);
			} else if ("装饰装修".equals(value[0])) {
				entity.setZszx(value[1]);
			} else if ("园林绿化".equals(value[0])) {
				entity.setYllh(value[1]);
			} else {
				entity.setFj(value[1]);
			}
		}
		entity.setType("0");
		service.saveSgxkEng(entity);
	}

	// 外地企业类型数据比例
	private void m22(JSONObject jsonStr) {
		OrgTypeQuantity entity = new OrgTypeQuantity();
		List<String[]> tmpList = edit(jsonStr);

		if (jsonStr.getString("tjYear") != null) {
			entity.setTjYear(jsonStr.getString("tjYear"));
		}
		for (String[] value : tmpList) {
			if ("建设公司".equals(value[0])) {
				entity.setJsdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("施工公司".equals(value[0])) {
				entity.setSgdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("监理公司".equals(value[0])) {
				entity.setJldw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("勘察设计公司".equals(value[0])) {
				entity.setKcdw(Integer.valueOf(value[1].replace("%", "")));
				entity.setSjdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("图审单位".equals(value[0])) {
				entity.setTsdw(Integer.valueOf(value[1].replace("%", "")));
			} else if ("检测机构".equals(value[0])) {
				entity.setJcdw(Integer.valueOf(value[1].replace("%", "")));
			}
		}
		entity.setType("外地");
		service.saveOrgtype(entity);
	}

	private List<String[]> edit(JSONObject jsonStr) {
		if (jsonStr == null)
			return null;
		List<String[]> tmpList = new ArrayList<String[]>();

		if (jsonStr.getString("sum1") != null) {
			tmpList.add(jsonStr.getString("sum1").split("_"));
		}
		if (jsonStr.getString("sum2") != null) {
			tmpList.add(jsonStr.getString("sum2").split("_"));
		}
		if (jsonStr.getString("sum3") != null) {
			tmpList.add(jsonStr.getString("sum3").split("_"));
		}
		if (jsonStr.getString("sum4") != null) {
			tmpList.add(jsonStr.getString("sum4").split("_"));
		}
		if (jsonStr.getString("sum5") != null) {
			tmpList.add(jsonStr.getString("sum5").split("_"));
		}
		if (jsonStr.getString("sum6") != null) {
			tmpList.add(jsonStr.getString("sum6").split("_"));
		}
		if (jsonStr.getString("sum7") != null) {
			tmpList.add(jsonStr.getString("sum7").split("_"));
		}
		if (jsonStr.getString("sum8") != null) {
			tmpList.add(jsonStr.getString("sum8").split("_"));
		}
		if (jsonStr.getString("sum9") != null) {
			tmpList.add(jsonStr.getString("sum9").split("_"));
		}
		if (jsonStr.getString("sum10") != null) {
			tmpList.add(jsonStr.getString("sum10").split("_"));
		}

		return tmpList;
	}
}
